/** @jsxImportSource @emotion/react */
import * as React from "react";
import {
    Button, TextArea, Text, useToast, InputLine, BlobInputList,
} from "customize-easy-ui-component";
import {
    InspectRecordLayout, InternalItemProps, useItemInputControl
} from "../../common/base";
import {useMedia} from "use-media";
import {assertNamesUnique} from "../../common/eHelper";
import {EditStorageContext} from "../../StorageContext";
import {eqpTypeAllMap} from "../../../dict/eqpComm";
import {itemA下结论, itemA非金要求} from "./editor";
import {itemA工作内容} from "./editItem";
import {itemA附页附} from "../editAnp";


const render设备品种={
    view:(orc:any)=>{
        return <>{eqpTypeAllMap.get(orc?.设备品种)}</>
    },
};
//还是走后台的台账已经录入的数据！ 而不是当前这份报告直接来做修改的。
//private String 壳程设计温度;     private String 管程设计温度;     private String 夹套设计温度;
export const input设计温度={
    edit:(inp:any,setInp:(a:any)=>void, orc:any)=>{
        console.log("input设计温度: inp=",inp,"orc=",orc);
        const dates=[`内筒/夹套：${inp?.壳程设计温度}/${inp?.夹套设计温度}`, `管程：${inp?.管程设计温度}`];
        return <div>该设备台账的参数：壳程设计温度&nbsp;{inp?.壳程设计温度??''}&nbsp; ;
            管程设计温度&nbsp;{inp?.管程设计温度??''}&nbsp; ; 夹套设计温度&nbsp;{inp?.夹套设计温度??''}&nbsp;
            <InputLine label='设计温度(℃)'>
                <BlobInputList value={inp?.设计温度 || ''} rows={1} datalist={dates}
                               onListChange={v => setInp({...inp, 设计温度: v || undefined}) } />
            </InputLine>
        </div>;
    },
    names: ['设计温度' ],                   //contentArr.map(([_,name] : any, i:number)=> name),
    toTail: '设计温度太多了需要另行设定',
};

export const config设备概况 = [
    [['设备名称', '_$设备名称'], ['设备品种', '_$设备品种',render设备品种],  ],
    [['使用登记证编号', '_$使用证号'], ['单位内编号', '_$单位内部编号'] ],
    [['使用单位名称', '_$使用单位'], ],
    [['设备使用地点', '_$设备使用地点'],  ],
    [['安全管理员', '安全员'], ['联系电话', '安全员电'],  ],
    //_$安全评定 实际是在下结论编辑器录入的，而并非来自后端现成的台账中的数据。
    // [['安全状况等级', '_$安全评定'], ['下次定期检验日期', {n:'新下定检日',t:'d'}, input下定检日] ],
    [['安全状况等级', '_$安全评定'], ['下次定期检验日期', '_$下检日期', ] ],
    //【第三个字段】若前面第二字段不是可编辑的情况实际也可以是设置单位的。
    [['产品编号', '_$出厂编号'],  ['公称壁厚', '_$公称壁厚', 'mm']  ],
    //设计温度==臺賬 現有字段組合的？？
    [['设计压力', '_$设计压力','MPa'], ['设计温度', {n:'设计温度',u:'℃'}, input设计温度], ['设计介质', '_$设计介质'] ],
    //這組 臺賬都可以設置的。但 還是報告再次錄入吧
    [['工作压力', '_$工作压力','MPa'], ['工作温度', '_$工作温度','℃'], ['工作介质', '_$工作介质'] ],
];

/**开启编制时的：默认值初始化操作。  若打印：本编辑器全部都不显示。
 * */
export const EntranceSetup =
React.forwardRef((
    {children, show, alone = true, repId, verId, rep}: InternalItemProps, ref
) => {
    const atPrint = useMedia('print');
    const toast = useToast();
    const doCheckNames = React.useCallback((verId: string) => {
        //【承压更少项目】，那些属于公共模板目录的 分项报告的唯一性检查在对方自己检查看。'Projects',
        const result = assertNamesUnique([{value: rep?.tzFields},
            {value: config设备概况, type:'esnt'},
            {value:[...itemA下结论, ...itemA工作内容, ...itemA非金要求, ...itemA附页附 ]},
            {value:['Projects', ]}
        ]);
        toast({title: "完成！", subtitle: result ? "没发现冲突" : "测试开关没开", intent: "success"});
    }, [rep,toast]);
    const {storage, setStorage} =React.useContext(EditStorageContext) as any;
    const getInpFilter = React.useCallback((par: any) => {
        const {_tblFixed, } =par||{};
        return {_tblFixed, };
    }, []);
    const {inp, setInp} = useItemInputControl({ref});
    if (atPrint) return null;
    else return (
        <InspectRecordLayout inp={inp} setInp={setInp} getInpFilter={getInpFilter} show={show}
                             alone={alone} label={'初始化本报告，默认值配置等'}>
            {process.env.REACT_APP_TEST==='true' && <><div>
                <Text variant="h5">构建开发模板时的工具：校验模板的存储name冲突；</Text>
                <Button intent='primary' onPress={() => doCheckNames(verId!)}>校验模板name唯一性</Button>
                <Text variant="h5">设置待测试表格的各列宽度：</Text>
                <TextArea value={storage?._tblFixed || ''} rows={2}
                          onChange={e => setStorage({ ...storage, _tblFixed: e.currentTarget.value || undefined}) }/>
            </div>
            </>
            }
            <hr/>
        </InspectRecordLayout>
    );
});

